package com.example.shardingjdbc.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.shardingjdbc.inputDto.HistoryDataSearchInputDto;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author wangmingwei
 * @date 2024年4月19日10:27:07
 * @description 历史数据接口
 */
@Mapper
public interface HistoryDataDao {

    /**
     * 获取动态参数设置
     *
     * @return List
     * @author wangmingwei
     * @Date 2024年4月19日11:15:33
     */
    @MapKey("columnCode")
    List<Map<String, String>> getDynamicParameter();

    /**
     * 获取历史参数设置
     *
     * @return List
     * @author wangmingwei
     * @Date 2024年4月19日11:15:33
     */
    @MapKey("columnCode")
    List<Map<String, String>> getHistoryParameter(@Param("tableName") String tableName);

    /**
     * 获取历史参数设置
     * @param tableName 表名称
     * @param selectValues 需要查询的字段
     * @param statisticalMethods 统计方式
     * @param groupBy 分组列表
     * @param historyDataSearchInputDto
     * @return List
     * @author wangmingwei
     * @Date 2024年4月19日11:15:33
     */
    @MapKey("historyId")
    List<Map<String, String>> getHistoryDataList(
                                                  @Param("tableName") String tableName,
                                                  @Param("selectValues") String selectValues,
                                                  @Param("statisticalMethods") String statisticalMethods,
                                                  @Param("groupBy") String groupBy,
                                                  @Param("historyDataSearchInputDto") HistoryDataSearchInputDto historyDataSearchInputDto);

    @MapKey("historyId")
    List<Map<String, String>> getHistoryDataListYH(
            @Param("startDate") Date startDate,
            @Param("endDate") Date endDate,
            @Param("tableName") String tableName,
            @Param("selectValues") String selectValues,
            @Param("statisticalMethods") String statisticalMethods,
            @Param("groupBy") String groupBy,
            @Param("historyDataSearchInputDto") HistoryDataSearchInputDto historyDataSearchInputDto);

    @MapKey("historyId")
    List<Map<String, String>> getScadaHistoryMin(
            @Param("startDate") Date startDate,
            @Param("endDate") Date endDate,
            @Param("tableName") String tableName,
            @Param("groupBy") String groupBy,
            @Param("historyDataSearchInputDto") HistoryDataSearchInputDto historyDataSearchInputDto);

}
